SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

create  PROCEDURE REPORTE_TRANSACCIONES_DIARIAS  @FECHA VARCHAR(50), @WHERE VARCHAR(255), @ORDER VARCHAR(255)  AS
DECLARE @DIAHABILDT DATETIME
DECLARE @SQL VARCHAR(5000)
DECLARE @DIAHABIL VARCHAR(50)

BEGIN
SET LANGUAGE ENGLISH 
SET @DIAHABILDT = dbo.siguienteDiaHabilAtras( convert( datetime, @FECHA ) )
SET LANGUAGE ENGLISH 
SET @DIAHABIL = CONVERT(VARCHAR,YEAR(@DIAHABILDT))+'-'+CONVERT(VARCHAR,MONTH(@DIAHABILDT))+'-'+CONVERT(VARCHAR,DAY(@DIAHABILDT))
	
set @SQL = '
	SET LANGUAGE ENGLISH 
	select 	f.iddesarrollo claveDesarrollo, 
		f.nombredesarrollo nombreDesarrollo, 
		d.idLote claveTerreno, 
		d.Superficie superficieTerreno, 
		case 
			when not (bloqueado is null or bloqueado = ''D'' or bloqueado = ''X'') then 1 
			when d.StaVenta = ''L'' then 2 
			when d.StaVenta = ''A'' then 3 
			when d.StaVenta = ''V'' then 4 
			when d.StaVenta = ''C'' then 5 
		end noEstatusVenta, 
		case 
			when bloqueado is null or bloqueado = ''D'' or bloqueado = ''X'' then d.StaVenta else ''B'' 
		end estatusVenta,
		case 
			when not (bloqueado is null or bloqueado = ''D'' or bloqueado = ''X'') then ''Bloqueado'' 
			when d.StaVenta = ''L'' then ''Disponible'' 
			when d.StaVenta = ''A'' then ''Apartado'' 
			when d.StaVenta = ''V'' then ''En Proceso de Firma'' 
			when d.StaVenta = ''C'' then ''Contratado'' 
		end descripcionEstatusVenta, 
		case 
			when not (bloqueado is null or bloqueado = ''D'' or bloqueado = ''X'') 
				then (	select 	vb.fecha_bloqueo 
					from 	c_view_bloqueos vb 
					where 	vb.cvelote = d.idlote and 
						vb.estatus_bloqueo = ''B'')
			when d.StaVenta = ''L'' and b.cvelote is not null and b.fecha_limite_bloqueo between CONVERT(DATETIME, '''+@DIAHABIL+''') and CONVERT(DATETIME, '''+@DIAHABIL+''')+1 then convert( datetime, '''+@FECHA+''' ) 
			when d.StaVenta = ''A'' then ap.fechaapartado 
			when d.StaVenta = ''V'' then fechafirma 
			when d.StaVenta = ''C'' then v.fechaentregacontrato 
		end fechaEstatusVenta 
	from 	desarrollos f, 
		lotes d 
			left join ventas v
			on d.idlote = v.idlote and
			   v.EstadoActual = ''A''
			left join apartados ap
			on v.idventa = ap.idventa and
			   ap.StaApartado = ''A''
			left join (	select 	cvelote,
						max(fecha_limite_bloqueo) as fecha_limite_bloqueo 
					from 	c_view_bloqueos group by cvelote
				   )  b 
			on b.cvelote = d.idlote 
	where 	f.iddesarrollo = d.iddesarrollo and 
		( case  
			when not (bloqueado is null or bloqueado = ''D'' or bloqueado = ''X'') 
				then (	select 	vb.fecha_bloqueo 
					from 	c_view_bloqueos vb 
					where 	vb.cvelote = d.idlote and 
						vb.estatus_bloqueo = ''B''
				      )  
			when d.StaVenta = ''L'' and b.cvelote is not null and b.fecha_limite_bloqueo between CONVERT(DATETIME, '''+@DIAHABIL+''') and CONVERT(DATETIME, '''+@DIAHABIL+''')+1 then CONVERT(DATETIME, '''+@FECHA+''') 
			when d.StaVenta = ''A'' then ap.fechaapartado 
			when d.StaVenta = ''V'' then fechafirma 
			when d.StaVenta = ''C'' then v.fechaentregacontrato 
		end ) is not null and 
		( case 
			when not (bloqueado is null or bloqueado = ''D'' or bloqueado = ''X'') 
				then (	select 	convert( datetime, convert( varchar, vb.fecha_bloqueo, 111 ) ) 
					from 	c_view_bloqueos vb 
					where 	vb.cvelote = d.idlote and 
						vb.estatus_bloqueo = ''B''
				     ) 
			when d.StaVenta = ''L'' and b.cvelote is not null and b.fecha_limite_bloqueo between CONVERT(DATETIME, '''+@DIAHABIL+''') and CONVERT(DATETIME, '''+@DIAHABIL+''')+1 then CONVERT(DATETIME, '''+@FECHA+''') 
			when d.StaVenta = ''A'' then ap.fechaapartado 
			when d.StaVenta = ''V'' then fechafirma 
			when d.StaVenta = ''C'' then v.fechaentregacontrato 
		end ) between ( case when datepart( dw, CONVERT(DATETIME, '''+@FECHA+''')  ) = 2 then CONVERT(DATETIME, '''+@FECHA+''')-2 else CONVERT(DATETIME, '''+@FECHA+''') end ) and CONVERT(DATETIME, '''+@FECHA+''') '
if @WHERE != '' begin
	set @SQL = @SQL + ' AND ' + @WHERE
end

IF @ORDER != '' BEGIN
	set @SQL = @SQL + ' ORDER BY ' + @ORDER
END
print @SQL
exec (@SQL)
END

GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

